<?php

class LocalidadController extends Controller
{
	/**
	 * @var string the default layout for the views. Defaults to '//layouts/column2', meaning
	 * using two-column layout. See 'protected/views/layouts/column2.php'.
	 */
	public $layout='//layouts/column2';

	/**
	 * @return array action filters
	 */
	public function filters()
	{
		return array(
			'accessControl', // perform access control for CRUD operations
			'postOnly + delete', // we only allow deletion via POST request
		);
	}

	/**
	 * Specifies the access control rules.
	 * This method is used by the 'accessControl' filter.
	 * @return array access control rules
	 */
	public function accessRules()
	{
		return array(
			array('allow',  // allow all users to perform 'index' and 'view' actions
				'actions'=>array('index','view'),
				'users'=>array('*'),
			),
			array('allow', // allow authenticated user to perform 'create' and 'update' actions
				'actions'=>array('create','update'),
				'users'=>array('@'),
			),
			array('allow', // allow admin user to perform 'admin' and 'delete' actions
				'actions'=>array('admin','delete','crearNuevaLocalidad','volcarLocalidades_DropDown'),
				'users'=>array('admin'),
			),
			array('deny',  // deny all users
				'users'=>array('*'),
			),
		);
	}
        
        
        
        
         /**
	 * Deletes a particular model.
	 * If deletion is successful, the browser will be redirected to the 'admin' page.
	 * @param integer $id the ID of the model to be deleted
	 */
       	public function actionDelete($id)
	{
          $transaction = Yii::app()->db->beginTransaction();   
          try{
            $this->loadModel($id)->delete();
            
            $logs = new LogsTransacciones;
            $logs->tabla = Yii::app()->getController()->getId();
            $logs->fecha = date('Y-m-d');
            $logs->usuario =  Yii::app()->user->name;
            $logs->operacion = 'ELIMINACION';
            $logs->comentarios = 'ELIMINACION - ' . $id;
            $logs->save();
            $transaction->commit();
            
            if(!isset($_GET['ajax']))
                Yii::app()->user->setFlash('success','EXITO!!!. La eliminacion fue Exitosa.');
            else{
                 echo CJSON::encode(array(
                         'result'=>1,
                         'result_texto'=>'La Eliminacion fue Exitosa!!!',  
                        ));
                    Yii::app()->end(); 
                    exit;
               }
           }catch(CDbException $e)
           {
            $transaction->rollBack();
            if(!isset($_GET['ajax']))
                Yii::app()->user->setFlash('error','ERROR!!! No se puedo realizar la eliminacion!!!');
            else{
                {
                 echo CJSON::encode(array(
                         'result'=>0,
                         'result_texto'=>'NO se pudo realizar la Eliminacion',
                        ));
                    Yii::app()->end(); 
                    exit;
               }
            }
           }
           
           // if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
           if(!isset($_GET['ajax']))
                $this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
	} //FIN DEL DELETE
        
        
        
          /**
	 * Manages all models.
	 */
	public function actionAdmin()
	{
		$model=new Localidad('search');
		$model->unsetAttributes();  // clear any default values
		if(isset($_GET['Localidad']))
			$model->attributes=$_GET['Localidad'];

		$this->render('admin',array(
			'model'=>$model,
		));
	}
        
        
        
           
      /*
       * 
       * Funcion que es llamada mediante ajax, para la carga de un nuevo Pais.
       * 
       * Dicha llamada es invocada en la adminisracion de este controlador, para dar el alta de un nuevo modelo.
       * El pedido es procesado mediante una peticion ajax, donde como primer
       * entrada es mostrar al visitante el formulario de carga del Nuevo Modelo, en este caso un pais.
       * Si todo es correctamente pasa, y guarda, en caso de haber un error, el visitante
       * es nuevamente redirigido y se le muiestra el formulario de carga, y los errores de carga que tenga
       * 
       */        
      public function actionCrearNuevaLocalidad()
      {
            
       $transaction = Yii::app()->db->beginTransaction();
       
       try{   
          if (isset($_POST['tlocalidad'])){
             $id = (int) $_POST['tlocalidad'];          
             
             if ($id > 0)
                { $model=$this->loadModel($id); }
             else
                { $model = new Localidad;  }
           }
           else
             {   $model = new Localidad;  }
        
        
          if (isset($_POST["localidad-oct"]))
          {
              $idact = (int) $_POST["localidad-oct"];
              if ($idact>0)
              {  
                  $model=$this->loadModel($idact);             
              }            
           }       
           
        if(isset($_POST['Localidad']))// si recibimos el formulario lo procesamos
        {   $esNuevo = $model->isNewRecord;
            $model->attributes=$_POST['Localidad'];
          
            if($model->save()) //si no hubo eerores pasa, guarda y mostramos cartel de correcto
            {
                    $logs = new LogsTransacciones;
                    $logs->tabla = Yii::app()->getController()->getId();
                    $logs->fecha = date('Y-m-d');
                    $logs->usuario =  Yii::app()->user->name;
                    
                    if ($esNuevo){
                    $logs->operacion = 'ALTA';
                    $logs->comentarios = 'ALTA - ' . $model->id;}
                    else{
                     $logs->operacion = 'MODIFICACION';
                     $logs->comentarios = 'MODIFICACION - ' . $model->id;}
                    
                    $logs->save();
                     $transaction->commit(); 
                    
                if (Yii::app()->request->isAjaxRequest)  //se proceso correctamnte
                {
                  if (($esNuevo==1) || ($esNuevo==true)){
                    echo CJSON::encode(array(
                         'status'=>'En Proceso', 
                         'div'=>"CARGA Finalizada con Exito!!!. El Proceso fue exitoso",
                         'datanuevo'=>$model->nombre,
                         'result'=>1,
                         'dataidnuevo'=>$model->id,
                        ));
                  }else{
                       echo CJSON::encode(array(
                         'status'=>'En Proceso', 
                         'div'=>"CARGA Finalizada con Exito!!!. El Proceso fue exitoso",
                         'datanuevo'=>$model->nombre,
                         'result'=>2,
                         'dataidnuevo'=>$model->id,
                        )); 
                  }
                      
                    Yii::app()->end(); 
                    exit;
                }            
            }
        }
        
        if (Yii::app()->request->isAjaxRequest) // primer entrada o llamada, o por erroresde carga de formulario
        {
          echo CJSON::encode(array(
               'status'=>'formulario',
                'result'=>0,
               'div'=>$this->renderPartial('_formNuevaLocalidad', array('model'=>$model,'post'=>$_POST), true)));
                Yii::app()->end();
                exit;
        }
        
        }catch(CDbException $e)
       {
            $transaction->rollBack();
             
            if(!isset($_GET['ajax']))
                Yii::app()->user->setFlash('error','ERROR!!! No se puedo realizar la eliminacion!!!');
            else{
                {
                 echo CJSON::encode(array(
                         'result'=>0,
                         'result_texto'=>'SE PRODUJO UN ERROR AL QUERER ',
                        ));
                    Yii::app()->end(); 
                    exit;
               }
            }
       }
        
        
      } //FIN DEL actionCrearSede
      
      
      
      
      
	


	/**
	 * Returns the data model based on the primary key given in the GET variable.
	 * If the data model is not found, an HTTP exception will be raised.
	 * @param integer $id the ID of the model to be loaded
	 * @return Localidad the loaded model
	 * @throws CHttpException
	 */
	public function loadModel($id)
	{
		$model=Localidad::model()->findByPk($id);
		if($model===null)
			throw new CHttpException(404,'The requested page does not exist.');
		return $model;
	}

	/**
	 * Performs the AJAX validation.
	 * @param Localidad $model the model to be validated
	 */
	protected function performAjaxValidation($model)
	{
		if(isset($_POST['ajax']) && $_POST['ajax']==='localidad-form')
		{
			echo CActiveForm::validate($model);
			Yii::app()->end();
		}
	}
        
        
        /***********************************************************/
        
        /*
        * Action CargarLocalidades
        * 
        * Funcion que es llamada por petiion AJAX,(en el formulario de carga; generalmente) donde recibe por parametro 
        * a taves de parametros POST un ID perteneciente a un Departamento, y develve un array en forma de CHtml::listdata
        *  conformado por las localidades asociadas a dicho Departamento.
        */
        
	public function actionVolcarLocalidades_DropDown()
	{ 
	  $data = Localidad::model()->findAll('id_departamento=:id_dep', 
                array(':id_dep'=>(int)$_POST['dpto_id']));
 
		$data=CHtml::listData($data,'id','nombre');
		   echo CHtml::tag('option',
                   array('value'=>""),CHtml::encode("SELECCIONE LA LOCALIDAD"),true);
		
                   
               foreach($data as $value=>$name)
			{
			echo CHtml::tag('option',array('value'=>$value),CHtml::encode($name),true);
		}
	} // fin de action cargarLocalidades
        
        
         public function actionDevolverCodigoPostal()
         { 
	    $data = Localidad::model()->find('id=:id_mun',array(':id_mun'=>(int)$_POST['value']));
            $codigopostal = 0;
          
            if (!empty($data))
              $codigopostal  = $data->codpostal;

            $resultado = array(
                'codigopostal'=>$codigopostal,
                'procesamiento'=>'OK',
                );
          
            echo CJSON::encode($resultado);
            Yii::app()->end();
         
	} 
        
        
      
}
